package IOAndProperties.IO;
/*
    java.io.Reader:字符输入流，是字符输入流的最顶层的父类，定义了一些共性的成员方法，是一个抽象类

        共性的成员方法：
         int	read() 读取单个字符。
         int	read(char[] cbuf)  将字符读入数组。
         int	read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
         void	close() 关闭该流并释放与之关联的所有资源。

    java.io.FileReader  extends  InputStreamReader extends  Reader
        FileReader 用于读取字符流。

        构造方法：
            FileReader(File file)  在给定从中读取数据的 File 的情况下创建一个新 FileReader。
            FileReader(String fileName)  在给定从中读取数据的文件名的情况下创建一个新 FileReader。
        构造方法作用：
            1、创建一个FileReader对象
            2、将FileReader对象指向需要读写的文件

*/

import java.io.FileReader;
import java.io.IOException;

public class ReaderTest01 {
    public static void main(String[] args) throws IOException {
        //1、创建一个FileReader对象，将FileReader对象指向需要读写的文件
        FileReader fileReader = new FileReader("/Users/ivy/Documents/java/mydir/FileReader.txt");
        int read = 0;
        //使用read读取单个字符并返回
    /*    while ((read = fileReader.read()) != -1) {
            System.out.print((char) read);
        }
    */

        //使用int read(char[] cbuf) 一次读取多个字符
        char[] chars = new char[1024];
        while ((read = fileReader.read(chars)) != -1) {
            //使用String中的构造方法将字符数组转换成字符串
            /*
            String(char[] value)  分配一个新的 String，使其表示字符数组参数中当前包含的字符序列。
            String(char[] value, int offset, int count)  分配一个新的 String，它包含取自字符数组参数一个子数组的字符。
            */
            System.out.println(new String(chars));
        }
    }

}

